Skip to content

Conversation

puddly
Copy link
Contributor

@puddly puddly commented Aug 24, 2022

Functions called on connection loss can fail to run in the executor if the event loop is shutting down at the same time:

2022-08-24 19:07:05.408 MacBook.local asyncio ERROR Task exception was never retrieved
future: <Task finished name='Task-9' coro=<SerialTransport._call_connection_lost() done, defined at ~/Projects/pyserial-asyncio/serial_asyncio/__init__.py:398> exception=RuntimeError('cannot schedule new futures after interpreter shutdown')>
Traceback (most recent call last):
  File "~/Projects/pyserial-asyncio/serial_asyncio/__init__.py", line 408, in _call_connection_lost
    await self._loop.run_in_executor(None, self._serial.flush)
  File "/usr/local/Cellar/[email protected]/3.9.13_1/Frameworks/Python.framework/Versions/3.9/lib/python3.9/asyncio/base_events.py", line 819, in run_in_executor
    executor.submit(func, *args), loop=self)
  File "/usr/local/Cellar/[email protected]/3.9.13_1/Frameworks/Python.framework/Versions/3.9/lib/python3.9/concurrent/futures/thread.py", line 169, in submit
    raise RuntimeError('cannot schedule new futures after '
RuntimeError: cannot schedule new futures after interpreter shutdown

I think it's better to call them synchronously and risk potentially stalling the nearly-stopped event loop than to not call them at all.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

1 participant